package com.winhxd.b2c.product.service;


import com.winhxd.b2c.common.domain.PagedList;
import com.winhxd.b2c.common.domain.product.condition.ProductPriceProgramAddCondition;
import com.winhxd.b2c.common.domain.product.condition.ProductPriceProgramAddDetailCondition;
import com.winhxd.b2c.common.domain.product.condition.ProductPriceProgramCondition;
import com.winhxd.b2c.common.domain.product.model.ProductPriceProgram;
import com.winhxd.b2c.common.domain.product.vo.ProductPriceProgramWithSpuVO;

import java.util.List;

/**
 * @author luosixiang
 */
public interface ProductPriceProgramService {

    /**
     * 查询所有的价格方案
     * @author luosixiang
     * @date 11:48 2019/1/9
     * @param
     * @return ProductPriceProgram
     **/

    List<ProductPriceProgram> findAllProductPriceProgram();

    /**
     * 根据model查询
     * @author luosixiang
     * @date 14:28 2019/1/9
     * @param productPriceProgram
     * @return ProductPriceProgram
     **/

    List<ProductPriceProgram> findProductPriceProgramByModel(ProductPriceProgramCondition productPriceProgram);
    /**
     * 根据model分页查询
     * @author luosixiang
     * @date 14:57 2019/1/11
     * @param productPriceProgram
     * @return PagedList<ProductPriceProgram>
     **/

    PagedList<ProductPriceProgram> findProductPriceProgramPageByModel(ProductPriceProgramCondition productPriceProgram);

    /**
     * 查询价格方案详情
     * @param condition
     * @return ProductPriceProgramWithSpuVO
     */
    ProductPriceProgramWithSpuVO findProductPriceProgramDetail(ProductPriceProgramAddDetailCondition condition);

    /**
     * 删除价格方案
     * @param id
     * @return Integer
     */
    Integer deleteProductPriceProgram(Long id);

    /**
     * 新增价格方案
     * @author luosixiang
     * @date 10:49 2019/1/10
     * @param condition
     * @return void
     **/
    void addProductPriceProgram(ProductPriceProgramAddCondition condition);

    /**
     * 修改价格方案
     * @author luosixiang
     * @date 16:32 2019/1/10
     * @param condition
     * @return void
     **/

    void modifyProductPriceProgram(ProductPriceProgramAddCondition condition);

    /**
     * 修改价格方案(不带分页)
     * @author zhaoyanbiao
     * @date 16:32 2019/1/10
     * @param condition
     * @return List<ProductPriceProgram>
     **/
    List<ProductPriceProgram> findProductPriceProgramListByModel(ProductPriceProgramCondition condition);

    /**
     * 检查该价格方案名称是否存在
     * @author luosixiang
     * @date 14:59 2019/1/14
     * @param name
     * @return Boolean
     **/

    Boolean checkPriceProgramName(String name);
}
